package com.zycfc.zsf.boot.job;

import java.lang.annotation.*;
import com.zycfc.zsf.boot.job.common.*;
import com.zycfc.zsf.boot.job.enums.*;

@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ZsfJob {
    String jobName();
    
    String cron();
    
    int shardingTotalCount() default 1;
    
    String fixedIp() default "";
    
    boolean shardingTdSql() default true;
    
    String shardingItemParameters() default "";
    
    String jobParameter() default "";
    
    boolean failover() default false;
    
    boolean misfire() default false;
    
    String description() default "";
    
    boolean overwrite() default false;
    
    boolean monitorExecution() default true;
    
    int monitorPort() default -1;
    
    int maxTimeDiffSeconds() default -1;
    
    int reconcileIntervalMinutes() default 10;
    
    boolean disabled() default false;
    
    long startedTimeoutMilliseconds() default Long.MAX_VALUE;
    
    long completedTimeoutMilliseconds() default Long.MAX_VALUE;
    
    CallType callType() default CallType.CALL_CHAIN_NO;
    
    IdempotentType idempotent() default IdempotentType.M;
    
    ShardingStrategy shardingStrategy() default ShardingStrategy.RANDOM;
    
    boolean test() default false;
}
